package com.atguigu.spring6.autowired.controller;

import com.atguigu.spring6.autowired.service.UserService;
import org.springframework.stereotype.Controller;

/**
 * 控制器类，用于处理用户相关的控制逻辑
 * 通过Spring的@Controller注解标记为一个控制器组件，自动扫描并注册到Spring容器中
 * 可以通过多种方式注入UserService依赖，本例展示了五种不同的注入方式
 */
@Controller("myUserController")
public class UserController {
    //注入service
    //第一种方式 属性注入
    //@Autowired //根据类型找到对应对象，完成注入
    //private UserService userService;


    //第二种方式 set方法注入
    //private UserService userService;

    //@Autowired
    //public void setUserService(UserService userService) {
    //  this.userService = userService;
    //}

    //第三种方式 构造方法注入
    // private UserService userService;
    //@Autowired
    //public UserController(UserService userService) {
    //  this.userService = userService;
    //}
    //第四种方式 形参上注入
    //private UserService userService;
    //public UserController(@Autowired UserService userService){
    //  this.userService = userService;
    //}
    //第五种方式 只有一个有参数构造函数，无注解
    private UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    /**
     * 处理用户添加操作
     * 调用UserService的add方法来执行具体的业务逻辑
     */
    public void add() {
        System.out.println("controller....");
        userService.add();
    }

}
